using System;
using System.Drawing;
using System.Web.UI;
using System.ComponentModel;

namespace WebChart
{
	[TypeConverter(typeof(ExpandableObjectConverter)), DefaultProperty("Visible"), PersistenceMode(PersistenceMode.InnerProperty)]
	public class ChartDataLabels
	{
		// Fields
		internal ChartInterior background = new ChartInterior(Color.Transparent);
		internal ChartLine border = new ChartLine(Color.Transparent);
		internal Font font;
		internal Color foreColor = Color.Black;
		internal int maxPointsWidth = 3;
		internal string numberFormat = "";
		internal DataLabelPosition position = DataLabelPosition.Top;
		internal string separator = "";
		internal bool showLegend = false;
		internal bool showValue = true;
		internal bool showXTitle = false;
		internal bool showZeroValues = true;
		internal bool visible = false;

		// Properties
		[DefaultValue((string) null), PersistenceMode(PersistenceMode.InnerProperty), Category("Appearance"), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Bindable(true), NotifyParentProperty(true)]
		public ChartInterior Background
		{
			get
			{
				return this.background;
			}
			set
			{
				this.background = value;
			}
		}

		[NotifyParentProperty(true), DefaultValue((string) null), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty), Bindable(true), Category("Appearance")]
		public ChartLine Border
		{
			get
			{
				return this.border;
			}
			set
			{
				this.border = value;
			}
		}

		[NotifyParentProperty(true)]
		public Font Font
		{
			get
			{
				return this.font;
			}
			set
			{
				this.font = value;
			}
		}

		[NotifyParentProperty(true), DefaultValue(typeof(Color), "Black")]
		public Color ForeColor
		{
			get
			{
				return this.foreColor;
			}
			set
			{
				this.foreColor = value;
			}
		}

		[NotifyParentProperty(true), DefaultValue(3)]
		public int MaxPointsWidth
		{
			get
			{
				return this.maxPointsWidth;
			}
			set
			{
				this.maxPointsWidth = value;
			}
		}

		[DefaultValue(""), NotifyParentProperty(true)]
		public string NumberFormat
		{
			get
			{
				return this.numberFormat;
			}
			set
			{
				this.numberFormat = value;
			}
		}

		[NotifyParentProperty(true), DefaultValue(0)]
		public DataLabelPosition Position
		{
			get
			{
				return this.position;
			}
			set
			{
				this.position = value;
			}
		}

		[NotifyParentProperty(true), DefaultValue("")]
		public string Separator
		{
			get
			{
				return this.separator;
			}
			set
			{
				this.separator = value;
			}
		}

		[DefaultValue(false), NotifyParentProperty(true)]
		public bool ShowLegend
		{
			get
			{
				return this.showLegend;
			}
			set
			{
				this.showLegend = value;
			}
		}

		[DefaultValue(true), NotifyParentProperty(true)]
		public bool ShowValue
		{
			get
			{
				return this.showValue;
			}
			set
			{
				this.showValue = value;
			}
		}

		[NotifyParentProperty(true), DefaultValue(false)]
		public bool ShowXTitle
		{
			get
			{
				return this.showXTitle;
			}
			set
			{
				this.showXTitle = value;
			}
		}

		[DefaultValue(true), NotifyParentProperty(true)]
		public bool ShowZeroValues
		{
			get
			{
				return this.showZeroValues;
			}
			set
			{
				this.showZeroValues = value;
			}
		}

		[NotifyParentProperty(true), DefaultValue(false)]
		public bool Visible
		{
			get
			{
				return this.visible;
			}
			set
			{
				this.visible = value;
			}
		}
	}
}
